<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .ball{
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background-color: red;
        }
    </style>
</head>
<body>
<div id="app">
    <input type="button" value="快到碗里来" @click="flag=!flag">
    <transition
            @before-enter="beforeEnter"
            @enter="enter"
            @after-enter="afterEnter"
    >
        <div class="ball" v-show="flag"></div>
    </transition>

</div>
<script>
    var vm=new Vue({
        el:'#app',
        data:{
            flag:true,
        },
        methods:{
            beforeEnter(el){
                // 小球开始动画之前 起始位置
                el.style.transform='translate(0,0)'
            },
            enter(el,done){
                // 强制动画刷新
                el.offsetWidth
                // 动画开始之后
                el.style.transform='translate(150px,450px)'
                el.style.transition='all 1s'
                done()
            },
            afterEnter(el){
                // 动画完成之后
                this.flag=!this.flag
            },
        }
    })
</script>
</body>
</html>